Goal: Characterize Parkinson’s associated DNA methylation as a combination of genetic and environmental factors. This includes: 1. Heritability of DMR tagCpGs in relation to all CpG sites 2. A model ranking scheme for SNP association in cis and E events 3. Relationship, if any, between patterns observed in ranking with number of SNPs in cis to CpG site
I’ve set up my code to take in CpG sites and matrixEQTL formatted genetic and expression data. Here I will load in DMRs prior to setting rank_cis_cpg_models running:
heritability <- fread("terre_heritability_150kb_mvalue.txt")
|--------------------------------------------------|
|==================================================|
(f_dmrs <- fread("/home1/NEURO/SHARE_DECIPHER/DMRs/TERRE/sig.cpgs.TERRE.F.HT.ancestry.csv"))
(m_dmrs <- fread("/home1/NEURO/SHARE_DECIPHER/DMRs/TERRE/sig.cpgs.TERRE.M.HT.ancestry.csv"))
sum(f_dmrs$cpg %in% m_dmrs$cpg) # overlap between M and F
[1] 5
# num heritable in cis
sum(m_dmrs$cpg %in% heritability[P < 0.05]$probe)
[1] 72
sum(f_dmrs$cpg %in% heritability[P < 0.05]$probe)
[1] 135
# proportion heritable in cis
sum(m_dmrs$cpg %in% heritability[P < 0.05]$probe) / nrow(m_dmrs)
[1] 0.1506276
sum(f_dmrs$cpg %in% heritability[P < 0.05]$probe) / nrow(f_dmrs)
[1] 0.140625
# total proportion heritable in cis
nrow(heritability[P < 0.05]) / nrow(heritability)
[1] 0.06881319
Checking if these proportions are larger than expected at random:
# Test 1 is proportion significantly different than proportion of heritable CpGs
prop.test(c(72, 53165), c(407, 772599))
2-sample test for equality of proportions with continuity correction
data: c(72, 53165) out of c(407, 772599)
X-squared = 72.439, df = 1, p-value < 2.2e-16
alternative hypothesis: two.sided
95 percent confidence interval:
0.06978562 0.14639636
sample estimates:
prop 1 prop 2
0.17690418 0.06881319
prop.test(c(135, 53165), c(960, 772599))
2-sample test for equality of proportions with continuity correction
data: c(135, 53165) out of c(960, 772599)
X-squared = 75.956, df = 1, p-value < 2.2e-16
alternative hypothesis: two.sided
95 percent confidence interval:
0.04929259 0.09433104
sample estimates:
prop 1 prop 2
0.14062500 0.06881319
prop.test(c(72, 135), c(407, 960))
2-sample test for equality of proportions with continuity correction
data: c(72, 135) out of c(407, 960)
X-squared = 2.6521, df = 1, p-value = 0.1034
alternative hypothesis: two.sided
95 percent confidence interval:
-0.008573634 0.081131988
sample estimates:
prop 1 prop 2
0.1769042 0.1406250
library(stats)
# Test 2 is proportion different than if CpGs were selected at random
1 - phyper(72, sum(heritability$P < 0.05), sum(heritability$P > 0.05), 407)
[1] 6.905587e-14
1 - phyper(135, sum(heritability$P < 0.05), sum(heritability$P > 0.05), 960)
[1] 1.998401e-15
# Permutation test
sum(sapply(1:10000, function(i) sum(sample(heritability$P < 0.05, 407))) >= 72) / 10000
[1] 0
sum(sapply(1:10000, function(i) sum(sample(heritability$P < 0.05, 960))) >= 135) / 10000
[1] 0
Let’s plot out the h2 value for these “heritable” DMRs, as well as the number of cis SNPs for these DMR CpGs:
heritability_sig <- fread("terre_heritability_150kb_mvalue_sig.txt")
ggplot(heritability[m_dmrs$cpg, on = .(probe)][P < 0.05], aes(h2)) +
geom_histogram(bins = 30) +
coord_cartesian(xlim = c(0.2, 1.0), ylim = c(0, 20))
ggplot(heritability[f_dmrs$cpg, on = .(probe)][P < 0.05], aes(h2)) +
geom_histogram(bins = 30) +
coord_cartesian(xlim = c(0.2, 1.0), ylim = c(0, 20))
ggplot(heritability_sig[m_dmrs$cpg, on = .(probe)][P < 0.05], aes(n_cis_snps)) +
geom_histogram(bins = 30) +
coord_cartesian(xlim = c(0, NA))
ggplot(heritability_sig[f_dmrs$cpg, on = .(probe)][P < 0.05], aes(n_cis_snps)) +
geom_histogram(bins = 30) +
coord_cartesian(xlim = c(0, NA))
f_heritable <- f_dmrs[cpg %chin% heritability[P < 0.05]$probe][order(-minpvalue)]
m_heritable <- m_dmrs[cpg %chin% heritability[P < 0.05]$probe][order(-minpvalue)]
m_heritable$h2 <- heritability[m_heritable$cpg, on = "probe"]$h2
f_heritable$h2 <- heritability[f_heritable$cpg, on = "probe"]$h2
f_heritable[order(-h2, minpvalue)]
m_heritable[order(-h2, minpvalue)]
cis_mQTLs <- fread("../prs_ewas_integration/cis_mQTL_analyses/terre_data/cis_all_impute_mQTL_results_CTP.txt.gz")
mQTLs_at_mdmr <- cis_mQTLs[m_dmrs$cpg, on = "gene"]
mQTLs_at_fdmr <- cis_mQTLs[f_dmrs$cpg, on = "gene"]
cis_mQTLs[FDR < 0.05]
cis_mQTLs[FDR < 0.05 & !duplicated(gene)]
Digging into these:
merge(f_dmrs, mQTLs_at_fdmr[, .(min(`p-value`)), by = "gene"], by.x = "cpg", by.y = "gene")
merge(m_dmrs, mQTLs_at_mdmr[, .(min(`p-value`)), by = "gene"], by.x = "cpg", by.y = "gene")
cis_mQTLs_m <- fread("../prs_ewas_integration/cis_mQTL_analyses/terre_data/male_cis_all_impute_mQTL_results_CTP.txt.gz", key = c("SNP", "gene"))
male_mQTLs_at_mdmr <- cis_mQTLs_m[m_dmrs$cpg, on = "gene"]
cis_mQTLs_f <- fread("../prs_ewas_integration/cis_mQTL_analyses/terre_data/female_cis_all_impute_mQTL_results_CTP.txt.gz", key = c("SNP", "gene"))
female_mQTLs_at_fdmr <- cis_mQTLs_f[f_dmrs$cpg, on = "gene"]
hist(cis_mQTLs_f$`p-value`, breaks = 100, main = "Distribution of cis mQTL P Values in Females", ylim = c(0, 10e6))
abline(h = nrow(cis_mQTLs_f) / 100)
hist(cis_mQTLs_m$`p-value`, breaks = 100, main = "Distribution of cis mQTL P Values in Males", ylim = c(0, 10e6))
abline(h = nrow(cis_mQTLs_m) / 100)
male_mQTLs_at_mdmr[, "P" := min(`p-value`), by = "gene"]
female_mQTLs_at_fdmr[, "P" := min(`p-value`), by = "gene"]
male_mQTLs_at_mdmr
female_mQTLs_at_fdmr
hist(male_mQTLs_at_mdmr[!duplicated(gene)]$P)
hist(female_mQTLs_at_fdmr[!duplicated(gene)]$P)
hist(male_mQTLs_at_mdmr$`p-value`, breaks = 100, main = "Distribution of cis-mQTL P Values at Male DMRs", ylim = c(0, 50000))
abline(h = nrow(male_mQTLs_at_mdmr) / 100)
hist(female_mQTLs_at_fdmr$`p-value`, breaks = 100, main = "Distribution of cis-mQTL P Values at Female DMRs")
abline(h = nrow(female_mQTLs_at_fdmr) / 100)
# heritability[P < 0.05][m_dmrs$cpg[m_dmrs$cpg %in% f_dmrs$cpg],on="probe"]
library(qqman)
library(qvalue)
qq(male_mQTLs_at_mdmr$`p-value`)
qq(female_mQTLs_at_fdmr$`p-value`)
m_matched_stat <- cis_mQTLs_m[cis_mQTLs_f[FDR < 0.05][, .(SNP, gene)], on = c("SNP", "gene")]
f_matched_stat <- cis_mQTLs_f[cis_mQTLs_m[FDR < 0.05][, .(SNP, gene)], on = c("SNP", "gene")]
(male_g_aic <- fread("male_dnam_breakdown.txt")[order(aic)])
(female_g_aic <- fread("female_dnam_breakdown.txt")[order(aic)])
m_min_aic <- male_g_aic[, .(aic = min(aic), sex = "male"), by = "cpg"]
f_min_aic <- female_g_aic[, .(aic = min(aic), sex = "female"), by = "cpg"]
ggplot(rbind(m_min_aic, f_min_aic), aes(aic, fill = sex)) +
geom_histogram(bins = 100, alpha = .9) +
ggtitle("Minimum G-model AIC Value per DMR per Sex") +
theme_minimal()
male_all_aic <- unique(rbindlist(lapply(fs::dir_ls(glob = "male*breakdown.txt.gz"), fread), fill = TRUE))
female_all_aic <- unique(rbindlist(lapply(fs::dir_ls(glob = "female*breakdown.txt.gz"), fread), fill = TRUE))
female_dmr_cpgs <- fread("~/AIC_F.csv")
male_dmr_cpgs <- fread("~/AIC_M.csv")
male_min_aic_models <- male_all_aic[, .SD[which.min(aic)], by = c("cpg", "model")][, .SD[which.min(aic)], by = "cpg"]
female_min_aic_models <- female_all_aic[, .SD[which.min(aic)], by = c("cpg", "model")][, .SD[which.min(aic)], by = "cpg"]
female_min_aic_models[order(-model)]
female_min_aic_models[order(-model)]
unique(female_min_aic_models$env)
write.csv(female_min_aic_models %>% filter(grepl("E", model)) %>% select(cpg, SNP, model, env, aic), quote = F)
write.csv(female_min_aic_models %>% filter(grepl("E", model)) %>% select(cpg, SNP, model, env, aic) %>% filter(cpg %in% female_dmr_cpgs$CpG), quote = F)
write.csv(male_min_aic_models %>% filter(grepl("E", model)) %>% select(cpg, SNP, model, env, aic) %>% filter(cpg %in% male_dmr_cpgs$CpG), quote = F)
write.csv(female_min_aic_models %>% select(cpg, SNP, model, env, aic) %>% filter(cpg %in% female_dmr_cpgs$CpG), quote = F)
write.csv(male_min_aic_models %>% select(cpg, SNP, model, env, aic) %>% filter(cpg %in% male_dmr_cpgs$CpG), quote = F)
ggplot(male_min_aic_models %>% filter(cpg %in% male_dmr_cpgs$CpG), aes(model)) +
geom_bar() +
geom_text(aes(label = ..count..), stat = "count", vjust = -0.5)
ggplot(female_min_aic_models %>% filter(cpg %in% female_dmr_cpgs$CpG), aes(model)) +
geom_bar() +
geom_text(aes(label = ..count..), stat = "count", vjust = -0.5) +
ggtitle("Female DMR models (representative CpGs)")
both_sex_aic <- bind_rows(list(male = male_all_aic %>% filter(cpg %in% male_dmr_cpgs$CpG), female = female_all_aic %>% filter(cpg %in% female_dmr_cpgs$CpG)), .id = "Sex")
ggplot(both_sex_aic, aes(aic, fill = Sex)) +
geom_histogram() +
facet_grid(rows = vars(model), scales = "free_y")
male_all_aic[model == "E"]
males_pd <- rbindlist(lapply(Sys.glob("male_terre_pd_f_*_dnam_breakdown.txt.gz"), function(f) fread(f, fill = TRUE)), fill = TRUE)
males_pd[, c("f_q") := c(p.adjust(f_p, method = "BH")), by = c("model", "env")]
females_pd <- rbindlist(lapply(Sys.glob("female_terre_pd_f_*_dnam_breakdown.txt.gz"), function(f) fread(f, fill = TRUE)), fill = TRUE)
females_pd[, c("f_q") := c(p.adjust(f_p, method = "BH")), by = c("model", "env")]
(min_f_females_pd <- females_pd[order(cpg), .SD[which.min(aic)], by = c("cpg", "model")][f_q < 0.05])
(min_f_males_pd <- males_pd[order(cpg), .SD[which.min(aic)], by = c("cpg", "model")][f_q < 0.05])
ggplot(min_f_females_pd[, .SD[which.min(f_p)], by = "cpg"], aes(model)) +
geom_bar() +
geom_text(aes(label = ..count..), stat = "count", vjust = 0) +
ggtitle("Female Models ranked by P(F) accounting for\nPD status") +
coord_cartesian(ylim = c(0, 1000))
ggplot(min_f_males_pd[, .SD[which.min(f_p)], by = "cpg"], aes(model)) +
geom_bar() +
geom_text(aes(label = ..count..), stat = "count", vjust = 0) +
ggtitle("Male Models ranked by P(F) accounting for\nPD status") +
coord_cartesian(ylim = c(0, 1000))
ggplot(min_f_females_pd, aes(model)) +
geom_bar() +
geom_text(aes(label = ..count..), stat = "count", vjust = 0) +
ggtitle("Significant Female Models accounting for\nPD status") +
coord_cartesian(ylim = c(0, 1000))
ggplot(min_f_males_pd, aes(model)) +
geom_bar() +
geom_text(aes(label = ..count..), stat = "count", vjust = 0) +
ggtitle("Significant Male Models accounting for\nPD status") +
coord_cartesian(ylim = c(0, 1000))
(min_aic_females_pd <- females_pd[order(cpg), .SD[which.min(aic)], by = "cpg"])
(min_aic_males_pd <- males_pd[order(cpg), .SD[which.min(aic)], by = "cpg"])
p1 <- ggplot(min_aic_females_pd %>% mutate(sig_f = factor(f_q < 0.05, levels = c(TRUE, FALSE))), aes(model, fill = sig_f)) +
geom_bar(position = "dodge") +
geom_text(aes(label = ..count..), position = position_dodge(width = 1), stat = "count", vjust = 0) +
coord_cartesian(ylim = c(0, 1000)) +
labs(fill = "FDR < 0.05") +
theme_classic() +
scale_fill_manual(values = c("lightpink2", "lightpink4"))
p2 <- ggplot(min_aic_males_pd %>% mutate(sig_f = factor(f_q < 0.05, levels = c(TRUE, FALSE))), aes(model, fill = sig_f)) +
geom_bar(position = "dodge") +
geom_text(aes(label = ..count..), position = position_dodge(width = 1), stat = "count", vjust = 0) +
coord_cartesian(ylim = c(0, 1000)) +
labs(fill = "FDR < 0.05") +
theme_classic() +
scale_fill_manual(values = c("lightsteelblue2", "lightsteelblue4"))
p3 <- ggplot(min_aic_females_pd %>% mutate(sig_f = factor(f_q < 0.05, levels = c(TRUE, FALSE))) %>% filter(cpg %in% female_dmr_cpgs$CpG), aes(model, fill = sig_f)) +
geom_bar(position = "dodge") +
geom_text(aes(label = ..count..), position = position_dodge(width = 1), stat = "count", vjust = 0) +
coord_cartesian(ylim = c(0, 50)) +
labs(fill = "FDR < 0.05") +
theme_classic() +
scale_fill_manual(values = c("lightpink2", "lightpink4"))
p4 <- ggplot(min_aic_males_pd %>% mutate(sig_f = factor(f_q < 0.05, levels = c(TRUE, FALSE))) %>% filter(cpg %in% male_dmr_cpgs$CpG), aes(model, fill = sig_f)) +
geom_bar(position = "dodge") +
geom_text(aes(label = ..count..), position = position_dodge(width = 1), stat = "count", vjust = 0) +
labs(fill = "FDR < 0.05") +
theme_classic() +
coord_cartesian(ylim = c(0, 50)) +
scale_fill_manual(values = c("lightsteelblue2", "lightsteelblue4"))
cowplot::plot_grid(p1, p2, p3, p4, nrow = 2, labels = "AUTO")
min_aic_females_pd %>%
filter(f_q < 0.05, cpg %in% female_dmr_cpgs$CpG, model == "GxE") %>%
write.csv()
Error: Problem with `filter()` input `..2`.
ℹ Input `..2` is `cpg %in% female_dmr_cpgs$CpG`.
x object 'female_dmr_cpgs' not found
Run `rlang::last_error()` to see where the error occurred.
female_nested <- fread("female_terre_pd_fnested_dnam_breakdown.txt.gz")
female_nested[, `:=`(
f_q_gxe = p.adjust(f_p_gxe, method = "BH"),
f_q_gee = p.adjust(f_p_gee, method = "BH"),
f_q_geg = p.adjust(f_p_geg, method = "BH"),
f_q_g = p.adjust(f_p_g, method = "BH"),
f_q_e = p.adjust(f_p_e, method = "BH")
),
by = "env"
]
male_nested <- fread("male_terre_pd_fnested_dnam_breakdown.txt.gz")
male_nested[, `:=`(
f_q_gxe = p.adjust(f_p_gxe, method = "BH"),
f_q_gee = p.adjust(f_p_gee, method = "BH"),
f_q_geg = p.adjust(f_p_geg, method = "BH"),
f_q_g = p.adjust(f_p_g, method = "BH"),
f_q_e = p.adjust(f_p_e, method = "BH")
),
by = "env"
]
(f_gxe_count <- female_nested[f_q_gxe < 0.05 & (f_q_gee < 0.05 | f_q_geg < 0.05) & (f_q_g < 0.05 | f_q_e < 0.05)][, .(snps = length(unique(snp)), envs = paste0(unique(env), collapse = ",")), by = "cpg"])
(m_gxe_count <- male_nested[f_q_gxe < 0.05 & (f_q_gee < 0.05 | f_q_geg < 0.05) & (f_q_g < 0.05 | f_q_e < 0.05)][, .(snps = length(unique(snp)), envs = paste0(unique(env), collapse = ",")), by = "cpg"])
(f_ge_count <- female_nested[f_q_gxe > 0.05 & (f_q_gee < 0.05 | f_q_geg < 0.05) & (f_q_g < 0.05 | f_q_e < 0.05)][, .(snps = length(unique(snp)), envs = paste0(unique(env), collapse = ",")), by = "cpg"])
(m_ge_count <- male_nested[f_q_gxe > 0.05 & (f_q_gee < 0.05 | f_q_geg < 0.05) & (f_q_g < 0.05 | f_q_e < 0.05)][, .(snps = length(unique(snp)), envs = paste0(unique(env), collapse = ",")), by = "cpg"])
(f_g_count <- female_nested[f_q_gxe > 0.05 & f_q_gee > 0.05 & f_q_geg > 0.05 & f_q_g < 0.05 & f_q_e > 0.05][, .(snps = length(unique(snp)), envs = paste0(unique(env), collapse = ",")), by = "cpg"])
(m_g_count <- male_nested[f_q_gxe > 0.05 & f_q_gee > 0.05 & f_q_geg > 0.05 & f_q_g < 0.05 & f_q_e > 0.05][, .(snps = length(unique(snp)), envs = paste0(unique(env), collapse = ",")), by = "cpg"])
(f_e_count <- female_nested[f_q_gxe > 0.05 & f_q_gee > 0.05 & f_q_geg > 0.05 & f_q_g > 0.05 & f_q_e < 0.05][, .(snps = length(unique(snp)), envs = paste0(unique(env), collapse = ",")), by = "cpg"])
(m_e_count <- male_nested[f_q_gxe > 0.05 & f_q_gee > 0.05 & f_q_geg > 0.05 & f_q_g > 0.05 & f_q_e < 0.05][, .(snps = length(unique(snp)), envs = paste0(unique(env), collapse = ",")), by = "cpg"])
Restricting to just those DMRs which pass a stricter cutoff:
(sig_f_gxe_count <- female_nested[f_q_gxe < 0.05 & (f_q_gee < 0.05 | f_q_geg < 0.05) & (f_q_g < 0.05 | f_q_e < 0.05)][, .(snps = length(unique(snp)), envs = paste0(unique(env), collapse = ",")), by = "cpg"][cpg %in% female_dmr_cpgs$V1])
(sig_m_gxe_count <- male_nested[f_q_gxe < 0.05 & (f_q_gee < 0.05 | f_q_geg < 0.05) & (f_q_g < 0.05 | f_q_e < 0.05)][, .(snps = length(unique(snp)), envs = paste0(unique(env), collapse = ",")), by = "cpg"][cpg %in% male_dmr_cpgs$V1])
(sig_f_ge_count <- female_nested[f_q_gxe > 0.05 & (f_q_gee < 0.05 | f_q_geg < 0.05) & (f_q_g < 0.05 | f_q_e < 0.05)][, .(snps = length(unique(snp)), envs = paste0(unique(env), collapse = ",")), by = "cpg"][cpg %in% female_dmr_cpgs$V1])
(sig_m_ge_count <- male_nested[f_q_gxe > 0.05 & (f_q_gee < 0.05 | f_q_geg < 0.05) & (f_q_g < 0.05 | f_q_e < 0.05)][, .(snps = length(unique(snp)), envs = paste0(unique(env), collapse = ",")), by = "cpg"][cpg %in% male_dmr_cpgs$V1])
(sig_f_g_count <- female_nested[f_q_gxe > 0.05 & f_q_gee > 0.05 & f_q_geg > 0.05 & f_q_g < 0.05 & f_q_e > 0.05][, .(snps = length(unique(snp)), envs = paste0(unique(env), collapse = ",")), by = "cpg"][cpg %in% female_dmr_cpgs$V1])
(sig_m_g_count <- male_nested[f_q_gxe > 0.05 & f_q_gee > 0.05 & f_q_geg > 0.05 & f_q_g < 0.05 & f_q_e > 0.05][, .(snps = length(unique(snp)), envs = paste0(unique(env), collapse = ",")), by = "cpg"][cpg %in% male_dmr_cpgs$V1])
(sig_f_e_count <- female_nested[f_q_gxe > 0.05 & f_q_gee > 0.05 & f_q_geg > 0.05 & f_q_g > 0.05 & f_q_e < 0.05][, .(snps = length(unique(snp)), envs = paste0(unique(env), collapse = ",")), by = "cpg"][cpg %in% female_dmr_cpgs$V1])
(sig_m_e_count <- male_nested[f_q_gxe > 0.05 & f_q_gee > 0.05 & f_q_geg > 0.05 & f_q_g > 0.05 & f_q_e < 0.05][, .(snps = length(unique(snp)), envs = paste0(unique(env), collapse = ",")), by = "cpg"][cpg %in% male_dmr_cpgs$V1])
f_nested_count <- data.table(
count = c(nrow(f_gxe_count), nrow(f_ge_count), nrow(f_g_count), nrow(f_e_count)),
Model = c("GxE", "G+E", "G", "E")
)
m_nested_count <- data.table(
count = c(nrow(m_gxe_count), nrow(m_ge_count), nrow(m_g_count), nrow(m_e_count)),
Model = c("GxE", "G+E", "G", "E")
)
sig_f_nested_count <- data.table(
count = c(nrow(sig_f_gxe_count), nrow(sig_f_ge_count), nrow(sig_f_g_count), nrow(sig_f_e_count)),
Model = c("GxE", "G+E", "G", "E")
)
sig_m_nested_count <- data.table(
count = c(nrow(sig_m_gxe_count), nrow(sig_m_ge_count), nrow(sig_m_g_count), nrow(sig_m_e_count)),
Model = c("GxE", "G+E", "G", "E")
)
ggplot(f_nested_count, aes(Model, count, label = count)) +
geom_col() +
geom_text(position = position_dodge(width = 1), vjust = 0)
ggplot(m_nested_count, aes(Model, count, label = count)) +
geom_col() +
geom_text(position = position_dodge(width = 1), vjust = 0)
ggplot(sig_f_nested_count, aes(Model, count, label = count)) +
geom_col() +
geom_text(position = position_dodge(width = 1), vjust = 0)
ggplot(sig_m_nested_count, aes(Model, count, label = count)) +
geom_col() +
geom_text(position = position_dodge(width = 1), vjust = 0)
m_gxe_count$model <- "GxE"
m_ge_count$model <- "G+E"
m_g_count$model <- "G"
m_e_count$model <- "E"
f_gxe_count$model <- "GxE"
f_ge_count$model <- "G+E"
f_g_count$model <- "G"
f_e_count$model <- "E"
m_aic_fnested <- merge(min_aic_males_pd, rbind(m_gxe_count, m_ge_count, m_g_count, m_e_count), by = c("cpg", "model"))
f_aic_fnested <- merge(min_aic_females_pd, rbind(f_gxe_count, f_ge_count, f_g_count, f_e_count), by = c("cpg", "model"))
ggplot(f_aic_fnested, aes(model)) +
geom_bar() +
geom_text(aes(label = ..count..), position = position_dodge(width = 1), stat = "count", vjust = 0)
ggplot(m_aic_fnested, aes(model)) +
geom_bar() +
geom_text(aes(label = ..count..), position = position_dodge(width = 1), stat = "count", vjust = 0)
ggplot(f_aic_fnested[cpg %in% female_dmr_cpgs$V1], aes(model)) +
geom_bar() +
geom_text(aes(label = ..count..), position = position_dodge(width = 1), stat = "count", vjust = 0)
ggplot(m_aic_fnested[cpg %in% male_dmr_cpgs$V1], aes(model)) +
geom_bar() +
geom_text(aes(label = ..count..), position = position_dodge(width = 1), stat = "count", vjust = 0)
annotation <- fread("~/MethylationEPIC_v-1-0_B4.csv", skip = 7, fill = TRUE)
f_nested_annot <- merge(annotation, rbind(f_gxe_count, f_ge_count, f_g_count, f_e_count), by.x = "Name", by.y = "cpg")
m_nested_annot <- merge(annotation, rbind(m_gxe_count, m_ge_count, m_g_count, m_e_count), by.x = "Name", by.y = "cpg")
unique(f_nested_annot, by = "UCSC_RefGene_Name")[model == "GxE"]
unique(m_nested_annot, by = "UCSC_RefGene_Name")[model == "GxE"]
unique(f_nested_annot, by = "UCSC_RefGene_Name")[model == "E"]
unique(m_nested_annot, by = "UCSC_RefGene_Name")[model == "E"]
unique(f_nested_annot, by = "UCSC_RefGene_Name")[Name %in% female_dmr_cpgs$V1 & model == "G+E"]
unique(m_nested_annot, by = "UCSC_RefGene_Name")[Name %in% male_dmr_cpgs$V1 & model == "G+E"]
unique(f_nested_annot, by = "UCSC_RefGene_Name")[Name %in% female_dmr_cpgs$V1 & model == "G"]
unique(m_nested_annot, by = "UCSC_RefGene_Name")[Name %in% male_dmr_cpgs$V1 & model == "G"]
missMethyl::gometh(f_nested_annot[Name %in% female_dmr_cpgs$V1]$Name, array.type = "EPIC") %>% arrange(P.DE)
missMethyl::gometh(f_nested_annot[Name %in% female_dmr_cpgs$V1]$Name, array.type = "EPIC", collection = "KEGG") %>% arrange(P.DE)
female_dmr_cpgs[!female_dmr_cpgs$V1 %in% f_nested_annot$Name]
male_dmr_cpgs[!male_dmr_cpgs$V1 %in% m_nested_annot$Name]
male_gpe_model <- fread("male_terre_pd_f_G+E_dnam_breakdown.txt.gz")
female_gpe_model <- fread("female_terre_pd_f_G+E_dnam_breakdown.txt.gz")
male_gpe_model[, `:=`(Gq = p.adjust(Gp, method = "BH"), Eq = p.adjust(Ep, method = "BH")), by = "env"]
female_gpe_model[, `:=`(Gq = p.adjust(Gp, method = "BH"), Eq = p.adjust(Ep, method = "BH")), by = "env"]
length(unique(male_gpe_model[Gq < 0.05]$cpg))
[1] 335
length(unique(male_gpe_model[Eq < 0.05]$cpg))
[1] 5
male_gpe_model[Gq > 0.05 & Eq < 0.05]
male_gpe_model[Gq < 0.05 & Eq > 0.05]
male_gpe_model[Gq < 0.05 & Eq < 0.05]
length(unique(female_gpe_model[Gq < 0.05]$cpg))
[1] 631
length(unique(female_gpe_model[Eq < 0.05]$cpg))
[1] 0
length(unique(female_gpe_model$cpg))
[1] 930
female_gpe_model[Gq > 0.05 & Eq < 0.05]
female_gpe_model[Gq < 0.05 & Eq > 0.05]
female_gpe_model[Gq < 0.05 & Eq < 0.05]
ggplot(melt(male_gpe_model[, .(-log10(Gp), -log10(Ep))]), aes(value, fill = variable)) +
geom_density(alpha = 0.5)
id.vars and measure.vars are internally guessed when both are 'NULL'. All non-numeric/integer/logical type columns are considered id.vars, which in this case are columns []. Consider providing at least one of 'id' or 'measure' vars in future.
# Check G sig
ggplot(melt(male_gpe_model[Gq < 0.05, .(Gest, Eest)]), aes(value, fill = variable)) +
geom_density(alpha = 0.5)
id.vars and measure.vars are internally guessed when both are 'NULL'. All non-numeric/integer/logical type columns are considered id.vars, which in this case are columns []. Consider providing at least one of 'id' or 'measure' vars in future.
ggplot(melt(male_gpe_model[Gq < 0.05, .(-log10(Gp), -log10(Ep))]), aes(value, fill = variable)) +
geom_density(alpha = 0.5)
id.vars and measure.vars are internally guessed when both are 'NULL'. All non-numeric/integer/logical type columns are considered id.vars, which in this case are columns []. Consider providing at least one of 'id' or 'measure' vars in future.
# Check E sig
ggplot(melt(male_gpe_model[Eq < 0.05, .(Gest, Eest)]), aes(value, fill = variable)) +
geom_density(alpha = 0.5)
id.vars and measure.vars are internally guessed when both are 'NULL'. All non-numeric/integer/logical type columns are considered id.vars, which in this case are columns []. Consider providing at least one of 'id' or 'measure' vars in future.
ggplot(melt(male_gpe_model[Eq < 0.05, .(-log10(Gp), -log10(Ep))]), aes(value, fill = variable)) +
geom_density(alpha = 0.5)
id.vars and measure.vars are internally guessed when both are 'NULL'. All non-numeric/integer/logical type columns are considered id.vars, which in this case are columns []. Consider providing at least one of 'id' or 'measure' vars in future.
# both G and E sig
ggplot(melt(male_gpe_model[Gq < 0.05 & Eq < 0.05, .(-log10(Gp), -log10(Ep))]), aes(value, fill = variable)) +
geom_density(alpha = 0.5)
id.vars and measure.vars are internally guessed when both are 'NULL'. All non-numeric/integer/logical type columns are considered id.vars, which in this case are columns []. Consider providing at least one of 'id' or 'measure' vars in future.
ggplot(male_gpe_model[Gq < 0.05 & Eq < 0.05, ], aes(Gest, Eest, color = cpg)) +
geom_point()
ggplot(male_gpe_model[Gq < 0.05 & Eq < 0.05, ], aes(-log10(Gp), -log10(Ep), color = cpg)) +
geom_point() +
coord_cartesian(xlim = c(2, 5), ylim = c(2, 5))
# E sig G not sig
ggplot(male_gpe_model[Gq > 0.05 & Eq < 0.05, ], aes(Gest, Eest, color = cpg)) +
geom_point()
ggplot(melt(male_gpe_model[Gq > 0.05 & Eq < 0.05, .(Gest, Eest, cpg, SNP)]), aes(variable, abs(value), color = cpg)) +
geom_point() +
geom_line(aes(group = interaction(SNP, cpg))) +
facet_wrap(~cpg)
id.vars and measure.vars are internally guessed when both are 'NULL'. All non-numeric/integer/logical type columns are considered id.vars, which in this case are columns [cpg, SNP]. Consider providing at least one of 'id' or 'measure' vars in future.
ggplot(melt(male_gpe_model[Gq > 0.05 & Eq < 0.05, .(Gest, Eest, cpg, SNP)]), aes(variable, abs(value), color = cpg)) +
geom_point() +
geom_boxplot() +
facet_wrap(~cpg)
id.vars and measure.vars are internally guessed when both are 'NULL'. All non-numeric/integer/logical type columns are considered id.vars, which in this case are columns [cpg, SNP]. Consider providing at least one of 'id' or 'measure' vars in future.
ggplot(male_gpe_model[Gq > 0.05 & Eq < 0.05, ], aes(-log10(Gp), -log10(Ep), color = cpg)) +
geom_point()
male_gpe_interest <- male_gpe_model[Gq < 0.05 & Eq < 0.05, ]
(merge(male_nested, male_gpe_interest, by.x = c("cpg", "snp", "env"), by.y = c("cpg", "SNP", "env")))
Error in merge(male_nested, male_gpe_interest, by.x = c("cpg", "snp", :
object 'male_nested' not found
ggplot(melt(female_gpe_model[, .(-log10(Gp), -log10(Ep))]), aes(value, fill = variable)) +
geom_density(alpha = 0.5)
id.vars and measure.vars are internally guessed when both are 'NULL'. All non-numeric/integer/logical type columns are considered id.vars, which in this case are columns []. Consider providing at least one of 'id' or 'measure' vars in future.
# Check G sig
ggplot(melt(female_gpe_model[Gq < 0.05, .(Gest, Eest)]) %>% mutate(variable = recode(variable, "V1" = "G_effect", "V2" = "E_effect")), aes(value, fill = variable)) +
geom_density(alpha = 0.5) +
ggtitle("Distribution of effect sizes for significant G models")
id.vars and measure.vars are internally guessed when both are 'NULL'. All non-numeric/integer/logical type columns are considered id.vars, which in this case are columns []. Consider providing at least one of 'id' or 'measure' vars in future.
ggplot(melt(female_gpe_model[Gq < 0.05, .(-log10(Gp), -log10(Ep))]) %>% mutate(variable = recode(variable, "V1" = "-log10(Gp)", "V2" = "-log10(Ep)")), aes(value, fill = variable)) +
geom_density(alpha = 0.5) +
ggtitle("Distribution of P values for significant G models")
id.vars and measure.vars are internally guessed when both are 'NULL'. All non-numeric/integer/logical type columns are considered id.vars, which in this case are columns []. Consider providing at least one of 'id' or 'measure' vars in future.
# Check E sig
ggplot(melt(female_gpe_model[Eq < 0.05, .(Gest, Eest)]), aes(value, fill = variable)) +
geom_density(alpha = 0.5)
id.vars and measure.vars are internally guessed when both are 'NULL'. All non-numeric/integer/logical type columns are considered id.vars, which in this case are columns []. Consider providing at least one of 'id' or 'measure' vars in future.
ggplot(melt(female_gpe_model[Eq < 0.05, .(-log10(Gp), -log10(Ep))]), aes(value, fill = variable)) +
geom_density(alpha = 0.5)
id.vars and measure.vars are internally guessed when both are 'NULL'. All non-numeric/integer/logical type columns are considered id.vars, which in this case are columns []. Consider providing at least one of 'id' or 'measure' vars in future.
# both G and E sig
ggplot(melt(female_gpe_model[Gq < 0.05 & Eq < 0.05, .(-log10(Gp), -log10(Ep))]), aes(value, fill = variable)) +
geom_density(alpha = 0.5)
id.vars and measure.vars are internally guessed when both are 'NULL'. All non-numeric/integer/logical type columns are considered id.vars, which in this case are columns []. Consider providing at least one of 'id' or 'measure' vars in future.
ggplot(female_gpe_model[Gq < 0.05 & Eq < 0.05, ], aes(Gest, Eest, color = cpg)) +
geom_point()
ggplot(female_gpe_model[Gq < 0.05 & Eq < 0.05, ], aes(-log10(Gp), -log10(Ep), color = cpg)) +
geom_point() +
coord_cartesian(xlim = c(2, 5), ylim = c(2, 5))
# E sig G not sig
ggplot(female_gpe_model[Gq > 0.05 & Eq < 0.05, ], aes(Gest, Eest, color = cpg)) +
geom_point()
ggplot(female_gpe_model[Gq > 0.05 & Eq < 0.05, ], aes(-log10(Gp), -log10(Ep), color = cpg)) +
geom_point()
male_gxe_model <- fread("male_terre_pd_f_GxE_dnam_breakdown.txt.gz")
female_gxe_model <- fread("female_terre_pd_f_GxE_dnam_breakdown.txt.gz")
gxe_vs_gpe <- data.frame(gxe_r2 = male_gxe_model$R2, gpe_r2 = male_gpe_model$R2)
ggplot(gxe_vs_gpe, aes(gxe_r2, gpe_r2)) +
geom_bin2d()
gxe_vs_gpe <- data.frame(gxe_r2 = female_gxe_model$R2, gpe_r2 = female_gpe_model$R2)
ggplot(gxe_vs_gpe, aes(gxe_r2, gpe_r2)) +
geom_bin2d()
write.csv(male_gpe_model[!cpg %in% effect_cpgs_male & cpg %in% male_dmr_cpgs$V1,.SD[which.min(aic)],by=cpg])
"","cpg","SNP","env","model","Gest","Gse","Gt","Gp","Eest","Ese","Et","Ep","GxEest","GxEse","GxEt","GxEp","R2","f","f_p","aic","Gq","Eq"
"1","cg00321709","rs2253522","as","G+E",0.0580533932761888,0.0239975134978125,2.41914201992138,0.0177185616925284,-0.0290177347805974,0.0318083266972478,-0.91226850933684,0.36427086885983,NA,NA,NA,NA,0.187015257399016,3.13688757156459,0.0485443405429823,-144.907318078317,0.125619897320576,0.999999916659963
write.csv(female_gpe_model[!cpg %in% effect_cpgs_female & cpg %in% female_dmr_cpgs$V1,.SD[which.min(aic)],by=cpg])
"","cpg","SNP","env","model","Gest","Gse","Gt","Gp","Eest","Ese","Et","Ep","GxEest","GxEse","GxEt","GxEp","R2","f","f_p","aic","Gq","Eq"
"1","cg13936230","rs145250397","i_ochl","G+E",-0.0549101519808717,0.0243681514081827,-2.25335730483163,0.0265599504835312,-0.0212531946854929,0.0197306206492611,-1.07716807612379,0.284161139238183,NA,NA,NA,NA,0.301233628588254,3.22491090146271,0.0441947053023914,-343.999220896485,0.159955024077542,0.999963311701757
"2","cg16983110","rs199660637","f_dithiocarb","G+E",0.022621744695705,0.0148652543635723,1.52178658652086,0.131431730807005,-0.0455258214491602,0.0272285976561656,-1.67198553609137,0.100203526492318,NA,NA,NA,NA,0.237855348446725,2.84528030479223,0.0637630087123536,-413.975743988923,0.432244527651989,0.996752712113154
"3","cg17967134","rs79686435","cu","G+E",0.018840178696085,0.00784936934467966,2.40021559297054,0.0183546320044088,0.00682963791969456,0.00657489200728407,1.03874526184282,0.301766736871193,NA,NA,NA,NA,0.304873527059504,3.53479621946928,0.0331223962819726,-551.264331452279,0.12414800595362,0.999402328457499
"4","cg06257089","rs149658361","herb","G+E",-0.0542629596227739,0.0206900094135926,-2.62266481073349,0.0101779308535539,0.0470540360652374,0.0276610152626871,1.70109577028831,0.0922290922239561,NA,NA,NA,NA,0.312291377017157,4.96907641722427,0.00888219146671494,-228.456522092996,0.0798492094805621,0.99579965358805
"5","cg14871138","rs6090030","fong","G+E",0.0337490215263091,0.0140080153856828,2.40926502413776,0.0179321198252822,-0.0340365423435161,0.0191915095753036,-1.77352084837118,0.079379267996526,NA,NA,NA,NA,0.268097719499335,5.10215088690772,0.00787618953316936,-300.067018111743,0.121422743292129,0.999999134624592
"6","cg18279536","rs10130354","h_uree","G+E",0.0592219664886702,0.0219818497366706,2.69413025737661,0.00835955739594385,-0.0480955215933846,0.0316493390550712,-1.51963747203998,0.132086897604449,NA,NA,NA,NA,0.206626327580846,4.72632489851272,0.0110752318934497,-316.058798133275,0.0691339492265723,0.999806212053231
"7","cg00399951","rs62446596","h_uree","G+E",-0.0662288039486468,0.0268006001820052,-2.4711686864802,0.0152699381507597,0.0556781774881823,0.0379788669176214,1.46603050609572,0.147312263374215,NA,NA,NA,NA,0.137382489976555,3.60829810626794,0.0311530650871996,-291.743247541416,0.108948731466678,0.999806212053231
"8","cg02566259","rs17835422","h_uree","G+E",0.0528217620928637,0.024131710817379,2.18889421030286,0.031090319526506,0.117600285289307,0.0688713516756509,1.70753560701327,0.0990390772302754,NA,NA,NA,NA,0.18763576181294,3.35967720225723,0.0415208411272245,-199.764037812512,0.178787459280438,0.999806212053231
"9","cg03490759","rs17098912","fong","G+E",-0.0643103061706739,0.0264716866688911,-2.42939964404497,0.017022973178539,0.0589087851791854,0.0287441088575748,2.04942116908458,0.043205644572839,NA,NA,NA,NA,0.183058196993198,4.72258481847965,0.0111063294613034,-209.946148525262,0.116980015058284,0.999999134624592
"10","cg07057235","rs118090909","f_dithiocarb","G+E",-0.0686709532851203,0.0248333410088249,-2.76527243195819,0.00684561581384147,0.00964052903408147,0.0217913734483429,0.442401166541182,0.659395775417304,NA,NA,NA,NA,0.332753866521563,3.71948329597074,0.0279634760019859,-447.013347678189,0.0594558701197824,0.996752712113154
"11","cg06265072","rs77692359","ins","G+E",0.0618216988722497,0.0241245963540786,2.56260034219382,0.0119765598497406,0.0137305330329654,0.00923380325276981,1.48698566095685,0.140363484216842,NA,NA,NA,NA,0.199810632758657,4.84687731394561,0.00992146012826074,-431.370648837872,0.0902236543016555,0.992332674511371
"12","cg24626752","rs191220424","h_uree","G+E",0.195020812086321,0.0793833399307428,2.45669698776172,0.0158587275759534,-0.0605346396131514,0.049115199039481,-1.23250319243318,0.221927430246139,NA,NA,NA,NA,0.201677120626299,3.63289323497875,0.0304213283342781,-232.592854236364,0.111937725822534,0.999806212053231
library(ggpubr)
male_tmp <- male_gpe_model
male_tmp$Sex <- "Male"
female_tmp <- female_gpe_model
female_tmp$Sex <- "Female"
male_female_gpe <- rbind(male_tmp, female_tmp)
male_female_max_gpe_effects <- melt(male_female_gpe[, .(G = max(abs(Gest)), E = max(abs(Eest))), by = c("cpg", "Sex")])
id.vars and measure.vars are internally guessed when both are 'NULL'. All non-numeric/integer/logical type columns are considered id.vars, which in this case are columns [cpg, Sex]. Consider providing at least one of 'id' or 'measure' vars in future.
cor.test(male_gpe_model$Gt, male_gpe_model$Et, method = "spearman")
Cannot compute exact p-value with ties
Spearman's rank correlation rho
data: male_gpe_model$Gt and male_gpe_model$Et
S = 4.9395e+18, p-value = 1.962e-08
alternative hypothesis: true rho is not equal to 0
sample estimates:
rho
0.003190363
cor.test(male_gpe_model$Gest, male_gpe_model$Eest, method = "spearman")
Cannot compute exact p-value with ties
Spearman's rank correlation rho
data: male_gpe_model$Gest and male_gpe_model$Eest
S = 4.9076e+18, p-value < 2.2e-16
alternative hypothesis: true rho is not equal to 0
sample estimates:
rho
0.009620696
cor.test(female_gpe_model$Gt, female_gpe_model$Et, method = "spearman")
Cannot compute exact p-value with ties
Spearman's rank correlation rho
data: female_gpe_model$Gt and female_gpe_model$Et
S = 1.5629e+19, p-value < 2.2e-16
alternative hypothesis: true rho is not equal to 0
sample estimates:
rho
0.01929246
cor.test(female_gpe_model$Gest, female_gpe_model$Eest, method = "spearman")
Cannot compute exact p-value with ties
Spearman's rank correlation rho
data: female_gpe_model$Gest and female_gpe_model$Eest
S = 1.5626e+19, p-value < 2.2e-16
alternative hypothesis: true rho is not equal to 0
sample estimates:
rho
0.01946726
male_female_gpe[, .(G = max(abs(Gest)), E = max(abs(Eest)), Gq = Gq[which.max(abs(Gest))], Eq = Eq[which.max(abs(Eest))]), by = c("cpg", "Sex")]
male_female_max_gpe_effects_sig <- melt(male_female_gpe[, .(G = max(abs(Gest[Gq < 0.05])), E = max(abs(Eest[Eq < 0.05]))), by = c("cpg", "Sex")])[!is.infinite(value)]
no non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infno non-missing arguments to max; returning -Infid.vars and measure.vars are internally guessed when both are 'NULL'. All non-numeric/integer/logical type columns are considered id.vars, which in this case are columns [cpg, Sex]. Consider providing at least one of 'id' or 'measure' vars in future.
p1 <- ggboxplot(male_female_max_gpe_effects[Sex == "Male"], "variable", "value", fill = "Sex", palette = c("lightsteelblue2"), group = "variable") + stat_compare_means(comparisons = list(c("G", "E"))) + theme_classic() + theme(legend.position = "") + labs(x = "Variable", y = "|Effect|")
p2 <- ggboxplot(male_female_max_gpe_effects[Sex == "Female"], "variable", "value", fill = "Sex", palette = c("lightpink2"), group = "variable") + stat_compare_means(comparisons = list(c("G", "E"))) + theme_classic() + theme(legend.position = "") + labs(x = "Variable", y = "|Effect|")
p3 <- ggboxplot(male_female_max_gpe_effects_sig[Sex == "Male"], "variable", "value", fill = "Sex", palette = c("lightsteelblue2")) + stat_compare_means(comparisons = list(c("G", "E"))) + theme_classic() + theme(legend.position = "") + labs(x = "Variable", y = "|Effect|")
p4 <- ggboxplot(male_female_max_gpe_effects_sig[Sex == "Female"], "variable", "value", fill = "Sex", palette = c("lightpink2")) + stat_compare_means(comparisons = list(c("G", "E"))) + theme_classic() + theme(legend.position = "")
p4
cowplot::plot_grid(p1, p2, p3, nrow = 1, labels = "AUTO")
male_female_max_gpe_t <- melt(male_female_gpe[, .(Gt = max(abs(Gt)), Et = max(abs(Et))), by = c("cpg", "Sex")])
male_female_max_gpe_t_sig <- melt(male_female_gpe[, .(Gt = max(abs(Gt[Gq < 0.05])), Et = max(abs(Et[Eq < 0.05]))), by = c("cpg", "Sex")])[!is.infinite(value)]
p1 <- ggboxplot(male_female_max_gpe_t[Sex == "Male"], "variable", "value", fill = "Sex", palette = c("lightsteelblue2"), group = "variable") + stat_compare_means(comparisons = list(c("Gt", "Et"))) + theme_classic() + theme(legend.position = "") + labs(x = "Variable", y = "|Effect|")
p2 <- ggboxplot(male_female_max_gpe_t[Sex == "Female"], "variable", "value", fill = "Sex", palette = c("lightpink2"), group = "variable") + stat_compare_means(comparisons = list(c("Gt", "Et"))) + theme_classic() + theme(legend.position = "") + labs(x = "Variable", y = "|Effect|")
p3 <- ggboxplot(male_female_max_gpe_t_sig[Sex == "Male"], "variable", "value", fill = "Sex", palette = c("lightsteelblue2")) + stat_compare_means(comparisons = list(c("Gt", "Et"))) + theme_classic() + theme(legend.position = "") + labs(x = "Variable", y = "|Effect|")
p4 <- ggboxplot(male_female_max_gpe_t_sig[Sex == "Female"], "variable", "value", fill = "Sex", palette = c("lightpink2")) + stat_compare_means(comparisons = list(c("Gt", "Et"))) + theme_classic() + theme(legend.position = "")
p4
cowplot::plot_grid(p1, p2, p3, nrow = 1, labels = "AUTO")
mean(male_female_max_gpe_t[Sex == "Male" & variable == "Gt"]$value)
mean(male_female_max_gpe_t[Sex == "Male" & variable == "Et"]$value)
mean(male_female_max_gpe_t[Sex == "Female" & variable == "Gt"]$value)
mean(male_female_max_gpe_t[Sex == "Female" & variable == "Et"]$value)
male_female_gpe_all <- melt(male_female_gpe[, .(Gt = abs(Gt), Et = abs(Et)), by = c("cpg", "Sex", "env")])
ggboxplot(male_female_gpe_all[Sex == "Male"], "variable", "value", fill = "Sex", palette = c("lightsteelblue2"), group = "variable") + stat_compare_means(comparisons = list(c("Gt", "Et"))) + facet_wrap(~env) + theme_classic() + theme(legend.position = "") + labs(x = "Variable", y = "|Effect|")
ggboxplot(male_female_gpe_all[Sex == "Female"], "variable", "value", fill = "Sex", palette = c("lightpink2"), group = "variable") + stat_compare_means(comparisons = list(c("Gt", "Et"))) + facet_wrap(~env) + theme_classic() + theme(legend.position = "") + labs(x = "Variable", y = "|Effect|")
z_scores_df <- male_female_gpe[, `:=`(Zge = (abs(Gest) - abs(Eest)) / sqrt(Gse^2 + Ese^2))]
p1 <- ggplot(z_scores_df, aes(Zge, fill = Sex)) +
geom_histogram(bins = 100, position = "identity") +
scale_fill_manual(values = c("lightpink2", "lightsteelblue2")) +
theme_classic()
z_scores_df[, `:=`(Zgreaterp = pnorm(Zge))] # one-sided , E greater than G
z_scores_df[, `:=`(Zlessp = pnorm(-Zge))] # one-sided, G greater than E
z_scores_df[, `:=`(Zgreaterq = p.adjust(Zgreaterp, method = "BH")), by = "env"]
z_scores_df[, `:=`(Zlessq = p.adjust(Zlessp, method = "BH")), by = "env"]
#Two-sided
z_scores_df[, `:=`(Zp = 2*pnorm(-abs(Zge)))] # one-sided , E greater than G
z_scores_df[, `:=`(Zq = p.adjust(Zp,method="BH")),by="env"]
# z_scores_df[Zlessq < 0.05]
z_scores_df[Zlessq < 0.05, .(CpG = uniqueN(cpg)), by = c("env", "Sex")]
p2 <- ggplot(z_scores_df[Zlessq < 0.05, .(CpG = uniqueN(cpg)), by = c("env", "Sex")], aes(env, CpG, fill = Sex)) +
geom_bar(stat = "identity", position = position_dodge(width = 1)) +
geom_text(aes(label = CpG), size = 4,vjust=-0.5, stat = "identity", position = position_dodge(width = 1)) +
scale_fill_manual(values = c("lightpink2", "lightsteelblue2")) +
theme_classic() +
theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 1))
p2
# ggplot(z_scores_df[Zgreaterq < 0.05, .(CpG = uniqueN(cpg)), by = c("env", "Sex")], aes(env, CpG, fill = Sex)) +
# geom_bar(stat = "identity", position = "dodge") +
# geom_text(aes(label = CpG), stat = "identity", position = "dodge") +
# scale_fill_manual(values = c("lightpink2", "lightsteelblue2")) +
# theme_classic() +
# theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 1))
# ggplot(z_scores_df[Zlessq < 0.05,.SD[which.max(abs(Zge))],by = c("cpg","env")],aes(env,fill = Sex)) +
# geom_bar(stat = "count",position ="dodge")+
# geom_text(aes(label=..count..), stat="count")+
# scale_fill_manual(values = c("lightpink2","lightsteelblue2")) +
# theme_classic()
# ggplot(z_scores_df[Zgreaterq < 0.05,.SD[which.max(abs(Zge))],by = c("cpg","env")],aes(env,fill = Sex)) +
# geom_bar(position = "dodge")+
# geom_text(aes(label=..count..), stat="count")+
# scale_fill_manual(values = c("lightpink2","lightsteelblue2")) +
# theme_classic()
cowplot::plot_grid(p1, p2, labels = "AUTO", nrow = 1)
total_male <- nrow(z_scores_df[!duplicated(cpg) & Sex == "Male"])
total_female <- nrow(z_scores_df[!duplicated(cpg) & Sex == "Female"])
p3 <- ggplot(z_scores_df[, .(CpG = ifelse(Sex == "Male", total_male - uniqueN(cpg[Zlessq < 0.05]), total_female - uniqueN(cpg[Zlessq < 0.05]))), by = c("env", "Sex")], aes(env, CpG, fill = Sex)) +
geom_bar(stat = "identity", position = position_dodge(width = 1)) +
geom_text(aes(label = CpG), size = 4, vjust=-0.5, stat = "identity", position = position_dodge(width = 1)) +
scale_fill_manual(values = c("lightpink2", "lightsteelblue2")) +
theme_classic() +
#ggtitle("No difference in either G or E effect") +
theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 1))
p1
p2 + scale_y_continuous(limits=c(0,225))
p3 + scale_y_continuous(limits=c(0,925))
(tmp <- wilcox.test(z_scores_df[Sex == "Male" & Zq < 0.05]$Zge,z_scores_df[Sex == "Female" & Zq < 0.05]$Zge,alternative = "l"))
Wilcoxon rank sum test with continuity correction
data: z_scores_df[Sex == "Male" & Zq < 0.05]$Zge and z_scores_df[Sex == "Female" & Zq < 0.05]$Zge
W = 751464339, p-value < 2.2e-16
alternative hypothesis: true location shift is less than 0
tmp$p.value
[1] 5.945071e-17
(tmp <- t.test(z_scores_df[Sex == "Male" & Zq < 0.05]$Zge,z_scores_df[Sex == "Female" & Zq < 0.05]$Zge,alternative = "g"))
Welch Two Sample t-test
data: z_scores_df[Sex == "Male" & Zq < 0.05]$Zge and z_scores_df[Sex == "Female" & Zq < 0.05]$Zge
t = 12.82, df = 69546, p-value < 2.2e-16
alternative hypothesis: true difference in means is greater than 0
95 percent confidence interval:
0.1510096 Inf
sample estimates:
mean of x mean of y
5.078683 4.905446
tmp$p.value
[1] 7.019692e-38
(tmp <- wilcox.test(z_scores_df[Sex == "Male" & Zq < 0.05]$Zge,alternative = "g"))
Wilcoxon signed rank test with continuity correction
data: z_scores_df[Sex == "Male" & Zq < 0.05]$Zge
V = 798460741, p-value < 2.2e-16
alternative hypothesis: true location is greater than 0
tmp$p.value
[1] 0
(tmp <- wilcox.test(z_scores_df[Sex == "Female" & Zq < 0.05]$Zge,alternative = "g"))
Wilcoxon signed rank test with continuity correction
data: z_scores_df[Sex == "Female" & Zq < 0.05]$Zge
V = 758025516, p-value < 2.2e-16
alternative hypothesis: true location is greater than 0
tmp$p.value
[1] 0
ggplot(melt(male_gpe_model[Eq < 0.05, .(Gest, Eest, cpg, SNP)]), aes(variable, abs(value), color = cpg)) +
geom_point() +
geom_line(aes(group = interaction(SNP, cpg))) +
facet_wrap(~cpg)
ggboxplot(
melt(male_gpe_model[Eq < 0.05, .(G = abs(Gest), E = abs(Eest), cpg, SNP)]),
"variable",
"value",
facet.by = "cpg",
fill = "lightsteelblue2"
) +
stat_compare_means(comparisons = list(c("G", "E")), vjust = 1.1, tip.length = 0) +
theme_classic()
ggplot(melt(male_gpe_model[Gq < 0.05 & Eq < 0.05, .(Gt, Et, cpg, SNP)]), aes(variable, abs(value), color = cpg)) +
geom_point() +
geom_line(aes(group = interaction(SNP, cpg))) +
facet_wrap(~cpg)
ggboxplot(
melt(male_gpe_model[Gq < 0.05 & Eq < 0.05, .(G = abs(Gt), E = abs(Et), cpg, SNP)]),
"variable",
"value",
facet.by = "cpg",
fill = "lightsteelblue2"
) +
stat_compare_means(comparisons = list(c("G", "E")), vjust = 1.2, tip.length = ) +
theme_classic() + labs(x = "Variable", y = "|Effect|")
ggplot(melt(male_gpe_model[Eq < 0.05, .(Gt, Et, cpg, SNP)]), aes(variable, abs(value), color = cpg)) +
geom_point() +
geom_line(aes(group = interaction(SNP, cpg))) +
facet_wrap(~cpg)
ggboxplot(
melt(male_gpe_model[Eq < 0.05, .(G = abs(Gt), E = abs(Et), cpg, SNP)]),
"variable",
"value",
facet.by = "cpg",
palette = c(),
fill = "lightsteelblue2"
) +
stat_compare_means(comparisons = list(c("G", "E")), vjust = 1.1, tip.length = 0) +
theme_classic()
ggplot(melt(male_gpe_model[Gq < 0.05 & Eq < 0.05, .(Gt, Et, cpg, SNP)]), aes(variable, abs(value), color = cpg)) +
geom_point() +
geom_line(aes(group = interaction(SNP, cpg))) +
facet_wrap(~cpg)
ggboxplot(
melt(male_gpe_model[Gq < 0.05 & Eq < 0.05, .(G = abs(Gt), E = abs(Et), cpg, SNP)]),
"variable",
"value",
facet.by = "cpg",
fill = "lightsteelblue2"
) +
stat_compare_means(comparisons = list(c("G", "E")), vjust = 1.2, tip.length = ) +
theme_classic() + labs(x = "Variable", y = "|t|")
unique(male_gpe_model[Eq < 0.05]$env)
unique(female_gpe_model[Eq < 0.05]$env)
male_gpe_model[Gq < 0.05, .SD[which.min(Gq)], by = "cpg"]
female_gpe_model[Gq < 0.05, .SD[which.min(Gq)], by = "cpg"]
males_pd_G <- males_pd[model == "G"]
males_pd_G$Gq <- p.adjust(males_pd_G$Gp, method = "BH")
females_pd_G <- females_pd[model == "G"]
females_pd_G$Gq <- p.adjust(females_pd_G$Gp, method = "BH")
males_pd_G[Gq < 0.05, .SD[which.min(Gq)], by = "cpg"]
females_pd_G[Gq < 0.05, .SD[which.min(Gq)], by = "cpg"]
female_g_digpd <- fread("female_digpd_pd_f_G_dnam_breakdown.txt.gz")
f_dmrs_digpd <- fread("/home1/NEURO/SHARE_DECIPHER/DMRs/DIGPD/sig.cpgs.DIGPD.F.csv")[, .SD[which.min(HMFDR)], by = "dmr"]
female_g_digpd[, `:=`(Gq = p.adjust(Gp, method = "BH"))]
sig_female_G_digpd <- merge(f_dmrs_digpd, female_g_digpd[Gq < 0.05, .SD[which.min(Gq)], by = "cpg"], by = "cpg")
male_g_digpd <- fread("male_digpd_pd_f_G_dnam_breakdown.txt.gz")
m_dmrs_digpd <- fread("/home1/NEURO/SHARE_DECIPHER/DMRs/DIGPD/sig.cpgs.DIGPD.M.csv")[, .SD[which.min(HMFDR)], by = "dmr"]
male_g_digpd[, `:=`(Gq = p.adjust(Gp, method = "BH"))]
sig_male_G_digpd <- merge(m_dmrs_digpd, male_g_digpd[Gq < 0.05, .SD[which.min(Gq)], by = "cpg"], by = "cpg")
female_overlap_G <- merge(females_pd_G[Gq < 0.05], female_g_digpd[Gq < 0.05], by = c("cpg", "SNP"))
female_overlap_G_min_snp <- merge(females_pd_G[Gq < 0.05, .SD[which.min(Gq)], by = "cpg"], female_g_digpd[Gq < 0.05, .SD[which.min(Gq)], by = "cpg"], by = c("cpg", "SNP"))
female_overlap_G_cpg <- merge(females_pd_G[Gq < 0.05, .SD[which.min(Gq)], by = "cpg"], female_g_digpd[Gq < 0.05, .SD[which.min(Gq)], by = "cpg"], by = c("cpg"))
female_overlap_G # SNP-CpG pairs significant in both cohorts
female_overlap_G_min_snp # overlap in minimum significant SNP per CpG in cohorts
female_overlap_G_cpg # overlap in CpGs with significant SNP between cohorts
sig_female_G_digpd # Representative DMRs for DIGPD with a significant G effect
male_overlap_G <- merge(males_pd_G[Gq < 0.05], male_g_digpd[Gq < 0.05], by = c("cpg", "SNP"))
male_overlap_G_min_snp <- merge(males_pd_G[Gq < 0.05, .SD[which.min(Gq)], by = "cpg"], male_g_digpd[Gq < 0.05, .SD[which.min(Gq)], by = "cpg"], by = c("cpg", "SNP"))
male_overlap_G_cpg <- merge(males_pd_G[Gq < 0.05, .SD[which.min(Gq)], by = "cpg"], male_g_digpd[Gq < 0.05, .SD[which.min(Gq)], by = "cpg"], by = c("cpg"))
male_overlap_G
male_overlap_G_min_snp
male_overlap_G_cpg
sig_male_G_digpd
sig_female_G_digpd[cpg %in% female_overlap_G_cpg$cpg]
library(VennDiagram)
venn.diagram(
x = list(
unique(females_pd_G[Gq < 0.05]$cpg),
unique(female_g_digpd[Gq < 0.05]$cpg),
unique(males_pd_G[Gq < 0.05]$cpg),
unique(male_g_digpd[Gq < 0.05]$cpg)
),
category.names = c("TERRE Females", "DIGPD Females", "TERRE males", "DIGPD males"),
filename = "terre_digpd_cpg_overlap_G.png",
output = TRUE,
imagetype = "png",
height = 480,
width = 480,
resolution = 300,
compression = "lzw",
lwd = 1,
col = c("#eea2adff", "#8b5f65ff", "#bcd2eeff", "#6e7b8bff"),
fill = c(alpha("#eea2adff", 0.3), alpha("#8b5f65ff", 0.3), alpha("#bcd2eeff", 0.3), alpha("#6e7b8bff", 0.3)),
cex = 0.5,
fontfamily = "sans",
cat.cex = 0.3,
cat.default.pos = "outer",
cat.pos = c(-27, 27, -27, 27),
cat.dist = c(0.055, 0.055, 0.055, 0.055),
cat.fontfamily = "sans"
# cat.col = c("#440154ff", '#21908dff'),
# rotation = 1
)
venn.diagram(
x = list(
unique(females_pd_G[, .SD[all(Gq > 0.05)], by = "cpg"]$cpg),
unique(female_g_digpd[, .SD[all(Gq > 0.05)], by = "cpg"]$cpg),
unique(males_pd_G[, .SD[all(Gq > 0.05)], by = "cpg"]$cpg),
unique(male_g_digpd[, .SD[all(Gq > 0.05)], by = "cpg"]$cpg)
),
category.names = c("TERRE Females", "DIGPD Females", "TERRE males", "DIGPD males"),
filename = "terre_digpd_cpg_overlap_no_G.png",
output = TRUE,
imagetype = "png",
height = 480,
width = 480,
resolution = 300,
compression = "lzw",
lwd = 1,
col = c("#eea2adff", "#8b5f65ff", "#bcd2eeff", "#6e7b8bff"),
fill = c(alpha("#eea2adff", 0.3), alpha("#8b5f65ff", 0.3), alpha("#bcd2eeff", 0.3), alpha("#6e7b8bff", 0.3)),
cex = 0.5,
fontfamily = "sans",
cat.cex = 0.3,
cat.default.pos = "outer",
cat.pos = c(-27, 27, -27, 27),
cat.dist = c(0.055, 0.055, 0.055, 0.055),
cat.fontfamily = "sans"
# cat.col = c("#440154ff", '#21908dff'),
# rotation = 1
)
library(fastSave)
cur_env <- Sys.getenv("PATH")
Sys.setenv(PATH = paste(cur_env, "/home1/NEURO/casazza/miniconda3/bin", sep = ":"))
# save.image.lbzip2(n.cores=16)
load.lbzip2(".RDataFS",n.cores=32)
sig_terre_m <- fread("/home1/NEURO/casazza/prs_ewas_integration/cis_mQTL_analyses/terre_data/male_cis_mqtl_PD_CTP_sig.txt.gz")
|--------------------------------------------------|
|==================================================|
sig_terre_f <- fread("/home1/NEURO/casazza/prs_ewas_integration/cis_mQTL_analyses/terre_data/female_cis_mqtl_PD_CTP_sig.txt.gz")
|--------------------------------------------------|
|==================================================|
sig_terre <- fread("/home1/NEURO/casazza/prs_ewas_integration/cis_mQTL_analyses/terre_data/cis_mqtl_PD_CTP_sig.txt.gz")
|--------------------------------------------------|
|==================================================|
# digpd_all <- fread("/home1/NEURO/casazza/prs_ewas_integration/cis_mQTL_analyses/digpd_data/cis_all_impute_mQTL_results_CTP.txt")
digpd_m <- fread("/home1/NEURO/casazza/prs_ewas_integration/cis_mQTL_analyses/digpd_data/male_cis_all_impute_mQTL_results_PD_CTP_no_mut.txt.gz")
|--------------------------------------------------|
|==================================================|
digpd_f <- fread("/home1/NEURO/casazza/prs_ewas_integration/cis_mQTL_analyses/digpd_data/female_cis_all_impute_mQTL_results_PD_CTP_no_mut.txt.gz")
|--------------------------------------------------|
|==================================================|
# merged <- merge(sig_terre, digpd_all, by = c("SNP", "gene"))
merged_f <- merge(sig_terre_f, digpd_f, by = c("SNP", "gene"))
merged_m <- merge(sig_terre_m, digpd_m, by = c("SNP", "gene"))
# length(merged$`FDR.y`)
# sum(merged$`FDR.y` < 0.05)
#
# sum(merged$`FDR.y` < 0.05) / length(merged$`FDR.y`)
#
# nrow(merged[FDR.y < 0.05, .SD[which.min(`p-value.y`)], by = "gene"])
# length(unique(merged$gene))
# nrow(merged[FDR.y < 0.05, .SD[which.min(`p-value.y`)], by = "gene"]) / length(unique(merged$gene))
length(merged_f$`FDR.y`)
[1] 5286181
sum(merged_f$`FDR.y` < 0.05)
[1] 2615686
sum(merged_f$`FDR.y` < 0.05) / length(merged_f$`FDR.y`)
[1] 0.4948158
nrow(merged_f[FDR.y < 0.05, .SD[which.min(`p-value.y`)], by = "gene"])
source("~/pi0.tst.R")
library(multtest)
1 - pi0.tst(merged_f$`p-value.y`)
[1] 0.8194137
1 - pi0.tst(merged_m$`p-value.y`)
[1] 0.8484302
(terre_f_dmr <- fread("/home1/NEURO/SHARE_DECIPHER/DMRs/TERRE/sig.cpgs.TERRE.F.HT.ancestry.csv"))
nrow(terre_f_dmr[threshold== TRUE])
[1] 201
(terre_m_dmr <- fread("/home1/NEURO/SHARE_DECIPHER/DMRs/TERRE/sig.cpgs.TERRE.M.HT.ancestry.csv"))
nrow(terre_m_dmr[threshold== TRUE])
[1] 53
(digpd_f_dmr <- fread("/home1/NEURO/SHARE_DECIPHER/DMRs/DIGPD/sig.cpgs.DIGPD.F.noGBA.csv"))
nrow(digpd_f_dmr[threshold== TRUE])
[1] 94
(digpd_m_dmr <- fread("/home1/NEURO/SHARE_DECIPHER/DMRs/DIGPD/sig.cpgs.DIGPD.M.nomut.csv"))
nrow(digpd_m_dmr[threshold== TRUE])
[1] 25
get_sig_dmr <- function(dmr_table, mqtl_dt){
mQTLs <- mqtl_dt[dmr_table$cpg,on="gene",nomatch=0]
res<- mQTLs[FDR < 0.05,.SD[which.min(`p-value`)],by="gene"]
dmrs <- unique(dmr_table[res$gene,on="cpg"]$dmr)
genes <- unique(dmr_table[res$gene,on="cpg"]$genes)
res <- list(res=res,dmr=dmrs,genes=genes)
return(res)
}
res1 <- get_sig_dmr(terre_f_dmr[sig_terre_f[FDR < 0.05]$gene, on="cpg",nomatch=0],digpd_f)
res2 <- get_sig_dmr(terre_m_dmr[sig_terre_m[FDR < 0.05]$gene, on="cpg",nomatch=0],digpd_m)
res3 <- get_sig_dmr(digpd_f_dmr[digpd_f[FDR < 0.05]$gene, on="cpg",nomatch=0],sig_terre_f)
res4 <- get_sig_dmr(digpd_m_dmr[digpd_m[FDR < 0.05]$gene, on="cpg",nomatch=0],sig_terre_m)
print(length(unique(res1$dmr)))
[1] 77
print(length(unique(res2$dmr)))
[1] 51
print(length(unique(res3$dmr)))
[1] 203
print(length(unique(res4$dmr)))
[1] 30
print(length(unique(res1$res$gene)))
[1] 277
print(length(unique(res2$res$gene)))
[1] 199
print(length(unique(res3$res$gene)))
[1] 423
print(length(unique(res4$res$gene)))
[1] 118
print(unique(res1$genes))
[1] "TMEM116;TMEM116;TMEM116;TMEM116;TMEM116"
[2] ""
[3] "SOX30;SOX30"
[4] "CRACR2A;CRACR2A"
[5] "PM20D1"
[6] "PM20D1;PM20D1"
[7] "HLA-DRB5"
[8] "UBXN6;UBXN6"
[9] "SOX30;SOX30;SOX30"
[10] "GSTM5"
[11] "RNF166;RNF166;RNF166"
[12] "FABP6;FABP6"
[13] "CSGALNACT1;CSGALNACT1;CSGALNACT1"
[14] "LY6D"
[15] "IRF6"
[16] "SOX30;SOX30;SOX30;SOX30"
[17] "HLA-C"
[18] "MPRIP;MPRIP"
[19] "UMODL1;UMODL1;UMODL1;UMODL1"
[20] "LOC100049716;NINJ2;NINJ2"
[21] "NINJ2"
[22] "ERGIC1"
[23] "ACTL9"
[24] "MOG;MOG;MOG;MOG;MOG;MOG;MOG;MOG;MOG;MOG;MOG"
[25] "CBFA2T3"
[26] "TRAK1;TRAK1"
[27] "GSTM5;GSTM5"
[28] "IRF6;IRF6"
[29] "HOOK2;HOOK2"
[30] "TRAK1"
[31] "ABCG2"
[32] "IL6"
[33] "DNHD1"
[34] "VENTXP1"
[35] "PGAM2"
[36] "CTNNBL1;CTNNBL1"
[37] "PTGFRN"
[38] "DGKG;DGKG;DGKG"
[39] "TAPBP;TAPBP;TAPBP;ZBTB22;ZBTB22"
[40] "ZNF718;ZNF718;ZNF595;ZNF595"
[41] "TGM3"
[42] "ISM1"
[43] "PTPRN2;PTPRN2;PTPRN2;PTPRN2;PTPRN2"
[44] "CCHCR1;CCHCR1;TCF19;TCF19;CCHCR1"
[45] "SH3BP2;SH3BP2;SH3BP2;SH3BP2"
[46] "TCF19;TCF19;CCHCR1"
[47] "CDSN;PSORS1C1"
[48] "ACOX3;ACOX3"
[49] "TRAPPC9;TRAPPC9"
[50] "ZBTB22;TAPBP;TAPBP;TAPBP;ZBTB22"
[51] "LOC441666"
[52] "ARHGAP18"
[53] "SNCG;MMRN2"
[54] "UMODL1;UMODL1;UMODL1;UMODL1;UMODL1;UMODL1;UMODL1;UMODL1"
[55] "BET1L;BET1L"
[56] "MMRN2;SNCG;SNCG"
[57] "LIPA;LIPA"
[58] "SNCG;SNCG;MMRN2"
[59] "LGALS8;LGALS8;LGALS8;LGALS8"
[60] "LIPA;LIPA;LIPA"
[61] "PPAP2C;PPAP2C;PPAP2C"
[62] "LGALS8;LGALS8-AS1;LGALS8;LGALS8;LGALS8"
[63] "EPHA2"
[64] "SLC1A7"
[65] "SPSB1"
[66] "SMC4;SMC4;SMC4;SMC4;SMC4;SMC4"
[67] "CDH22"
[68] "F11-AS1"
[69] "TXNRD2;TXNRD2;COMT"
[70] "ISG15"
[71] "H1F0"
[72] "PPARGC1A"
[73] "LOC399959;MIR125B1"
[74] "HEY2"
[75] "LGALS8;LGALS8;LGALS8;LGALS8-AS1;LGALS8"
[76] "MYF5;MYF5"
[77] "TXNRD1;TXNRD1;TXNRD1;EID3;TXNRD1;TXNRD1"
print(unique(res2$genes))
[1] "DTNA;DTNA;DTNA;DTNA;DTNA;DTNA;DTNA;DTNA;DTNA;DTNA;DTNA;DTNA"
[2] "MUPCDH;MUPCDH"
[3] "CHORDC1;CHORDC1"
[4] "ZNF718;ZNF718;ZNF718;ZNF718;ZNF718;ZNF718"
[5] "ZNF718"
[6] ""
[7] "NPPA"
[8] "HLA-DPB2"
[9] "KIAA1530"
[10] "GABBR1;GABBR1;GABBR1"
[11] "UTS2B;CCDC50;CCDC50"
[12] "PAX8;PAX8;PAX8;PAX8;PAX8;LOC440839;LOC654433"
[13] "FCN2;FCN2"
[14] "SLFN12"
[15] "SLFN12;SLFN12"
[16] "BST2"
[17] "BST2;MVB12A;BISPR;BISPR"
[18] "PAX8-AS1;PAX8-AS1;PAX8;PAX8;PAX8;PAX8"
[19] "MAEA;MAEA"
[20] "BCL2L14;BCL2L14;BCL2L14"
[21] "RALGDS"
[22] "MAEA;MAEA;MAEA;MAEA;MAEA;MAEA;MAEA"
[23] "BISPR;BISPR;BST2;MVB12A"
[24] "BCL2L14;BCL2L14;BCL2L14;BCL2L14;BCL2L14"
[25] "PLEKHH2;LOC728819"
[26] "PAX8;PAX8;LOC654433;PAX8;PAX8;PAX8;LOC440839"
[27] "B3GALT4"
[28] "TCEA2;TCEA2"
[29] "C14orf64"
[30] "RGMA;RGMA;RGMA;RGMA;RGMA;RGMA"
[31] "DDR1;DDR1;DDR1"
[32] "ACSL5;ACSL5;ACSL5"
[33] "CCDC155;CCDC155"
[34] "CCDC155"
[35] "UTS2D;CCDC50;CCDC50"
[36] "HDAC4"
[37] "ACSL5;ACSL5;ACSL5;ACSL5"
[38] "TMEM184A"
[39] "BCL2L14;BCL2L14;BCL2L14;BCL2L14"
[40] "RNF5P1;RNF5;AGPAT1"
[41] "NHEDC2"
[42] "FBXO43;FBXO43;FBXO43"
[43] "DCPS"
[44] "TCEA2"
[45] "RGMA;RGMA;RGMA;RGMA;RGMA;RGMA;RGMA"
[46] "PTH1R"
[47] "CCSAP"
[48] "DZIP1L;DZIP1L"
[49] "RAET1E-AS1;LRP11"
print(unique(res3$genes))
[1] "POU1F1;POU1F1"
[2] ""
[3] "ROCK2"
[4] "PLEC1;PLEC1;PLEC1;PLEC1;PLEC1;PLEC1;PLEC1;PLEC1"
[5] "FAM59B"
[6] "TP53INP1;TP53INP1"
[7] "IFNAR1;IFNAR1"
[8] "RGS12;RGS12;RGS12"
[9] "NUB1;NUB1"
[10] "NCAM1;NCAM1;NCAM1;NCAM1;NCAM1"
[11] "NPAS3;NPAS3;NPAS3;NPAS3"
[12] "ADCY4"
[13] "PLEC;PLEC;PLEC;PLEC;PLEC;PLEC;PLEC;PLEC"
[14] "LINC00879"
[15] "CTBP1;CTBP1;C4orf42"
[16] "SLC44A4"
[17] "SMAD5-AS1;SMAD5;SMAD5;SMAD5"
[18] "GFM2;GFM2;GFM2;GFM2;GFM2"
[19] "SLC12A4;SLC12A4;SLC12A4;SLC12A4;SLC12A4"
[20] "IFNA13"
[21] "ITGAD"
[22] "TNS3"
[23] "HDDC2"
[24] "SLC7A5"
[25] "TTYH1;TTYH1;TTYH1"
[26] "C10orf71;C10orf71"
[27] "ACSF3;ACSF3;ACSF3;ACSF3;ACSF3"
[28] "TMEM72-AS1"
[29] "KIF16B;KIF16B;KIF16B"
[30] "MAPKSP1;MAPKSP1"
[31] "CSGALNACT2"
[32] "ITGAD;ITGAD"
[33] "SRC"
[34] "ITGAM;ITGAM"
[35] "SNORD114-10"
[36] "ZCCHC8"
[37] "GAREML;GAREML"
[38] "CTR9"
[39] "HOXA4"
[40] "BEGAIN"
[41] "ARHGEF10"
[42] "CLEC3B"
[43] "MAP3K9"
[44] "MAP3K9;MAP3K9"
[45] "HOXA4;HOXA4"
[46] "MOCS1;MOCS1"
[47] "CSMD3;CSMD3;CSMD3"
[48] "RPAP3;RPAP3;RPAP3"
[49] "GSPT1;GSPT1;GSPT1"
[50] "MKLN1;MKLN1"
[51] "ZXDC;ZXDC"
[52] "PYGL;PYGL"
[53] "PLCZ1"
[54] "LOC101928767"
[55] "HIVEP3;HIVEP3;HIVEP3;HIVEP3"
[56] "F11R"
[57] "ZIK1"
[58] "HIVEP3;HIVEP3"
[59] "DIRC1"
[60] "HIVEP3;HIVEP3;HIVEP3;HIVEP3;HIVEP3;HIVEP3"
[61] "MTTP;TRMT10A;TRMT10A;MTTP"
[62] "HIBADH"
[63] "ITPR2"
[64] "B3GALT2;CDC73"
[65] "C4orf42;CTBP1;CTBP1"
[66] "TMEM165;TMEM165"
[67] "C12orf73"
[68] "ARHGEF10;ARHGEF10;ARHGEF10"
[69] "SVIP"
[70] "SNORD114-10;SNORD114-9"
[71] "KIF16B"
[72] "MSRB1"
[73] "CACNG4"
[74] "DLG2"
[75] "RIMS1;RIMS1;RIMS1"
[76] "LOC100129697;CBFA2T3;CBFA2T3"
[77] "EMC2"
[78] "ST8SIA6"
[79] "MUC20"
[80] "LRRC2;TDGF1"
[81] "CRY2;CRY2"
[82] "GLB1L;GLB1L;GLB1L"
[83] "SNORD113-7"
[84] "SECTM1"
[85] "COX7B2"
[86] "CCDC149;CCDC149"
[87] "RIMS1;RIMS1;RIMS1;RIMS1;RIMS1"
[88] "TTN;TTN;TTN;MIR548N;TTN"
[89] "SLITRK6"
[90] "LOC285830;LOC285830"
[91] "C10orf71-AS1;C10orf71"
[92] "KIF12;KIF12"
[93] "SOX5;SOX5"
[94] "CNN1"
[95] "HS3ST3A1;HS3ST3A1"
[96] "MYO3B;MYO3B;MYO3B"
[97] "BLCAP;BLCAP;BLCAP;BLCAP;NNAT;NNAT;BLCAP"
[98] "TMEM41B;TMEM41B;TMEM41B"
[99] "CDH18;CDH18"
[100] "MANEA"
[101] "KIF12"
[102] "OMG;NF1;NF1"
[103] "TDRD9"
[104] "ADAM2"
[105] "ADGB"
[106] "MFI2-AS1;MFI2"
[107] "PIP5K1B;PIP5K1B"
[108] "CTNND2;CTNND2;CTNND2;CTNND2;CTNND2"
[109] "DMP1;DMP1"
[110] "CECR5;CECR4;CECR4;CECR5"
[111] "TCN2"
[112] "NEDD1;NEDD1;NEDD1;NEDD1"
[113] "RGMA;RGMA;RGMA;RGMA;RGMA;RGMA"
[114] "AURKC;AURKC;AURKC"
[115] "DUXA"
[116] "CNN1;CNN1"
[117] "GRIK2;GRIK2;GRIK2"
[118] "GLB1L;GLB1L;GLB1L;GLB1L"
[119] "ZNF568;ZNF568"
[120] "MS4A4A"
[121] "KLHDC4;KLHDC4;KLHDC4"
[122] "CASR;CASR"
[123] "ZBTB20;ZBTB20-AS1;ZBTB20;ZBTB20;ZBTB20;ZBTB20;ZBTB20;ZBTB20;ZBTB20"
[124] "LOC101929680;SCN1A"
[125] "FAM101A"
[126] "FLJ34503"
[127] "CNN1;CNN1;CNN1;CNN1;CNN1;CNN1"
[128] "AURKC;AURKC;AURKC;AURKC;AURKC"
[129] "VGLL4;VGLL4"
[130] "GLB1L;GLB1L;GLB1L;GLB1L;GLB1L"
[131] "SOX5"
[132] "KIAA1524"
[133] "REV3L;REV3L;REV3L;TRAF3IP2-AS1;TRAF3IP2-AS1;TRAF3IP2-AS1;TRAF3IP2-AS1"
[134] "GLB1L"
[135] "CASC6"
[136] "RDX"
[137] "CASR"
[138] "MYRFL"
[139] "BANK1;BANK1;BANK1"
[140] "SLC44A4;SLC44A4"
[141] "SERPINB5"
[142] "ACBD4;ACBD4;ACBD4;ACBD4"
[143] "TGIF1;TGIF1;TGIF1;TGIF1;TGIF1;TGIF1;TGIF1;TGIF1"
[144] "GLRX5;SNHG10;SNHG10"
[145] "KRTAP19-2"
[146] "CECR5;CECR5;CECR5-AS1;CECR5-AS1"
[147] "SOX6;SOX6;SOX6;SOX6"
[148] "DYRK1A;DYRK1A;DYRK1A;DYRK1A"
[149] "BMP2K;BMP2K"
[150] "FAM19A5;FAM19A5"
[151] "ZSCAN18;ZSCAN18"
[152] "TMEM85"
[153] "ELP2P;GEMIN4"
[154] "LINC01007"
[155] "SLC6A18"
[156] "WDR17;WDR17"
[157] "C10orf116;AGAP11;AGAP11"
[158] "CENPBD1;AFG3L1;CENPBD1;AFG3L1;AFG3L1"
[159] "LYZ"
[160] "CLASP2;CLASP2"
[161] "RGMA;RGMA;RGMA;RGMA;RGMA;RGMA;RGMA"
[162] "KLRF2"
[163] "OR8G5;OR8G1"
[164] "TCN2;TCN2;PES1;PES1;PES1;PES1"
[165] "TCN2;TCN2;TCN2;TCN2;PES1;PES1"
[166] "ALB"
[167] "BLCAP;NNAT;BLCAP;BLCAP;BLCAP;BLCAP;NNAT"
[168] "PBX2"
[169] "ANKRD62"
[170] "CNOT2;CNOT2;CNOT2;CNOT2"
[171] "ZMYM2;ZMYM2;ZMYM2;ZMYM2"
[172] "OXTR"
[173] "KCNAB3"
[174] "ERBB4;ERBB4"
[175] "B3GALNT1;B3GALNT1;B3GALNT1;B3GALNT1;B3GALNT1"
[176] "FBXW7;FBXW7;FBXW7"
[177] "ZBTB20;ZBTB20;ZBTB20;ZBTB20;ZBTB20;ZBTB20;ZBTB20"
[178] "ANO3"
[179] "FRMD3;FRMD3"
[180] "PAPOLA;PAPOLA;PAPOLA;PAPOLA"
[181] "LINC01194"
[182] "TFPI2"
[183] "COL4A1"
[184] "GUCY1B2"
[185] "EPHA5;EPHA5"
[186] "FAM115A"
[187] "GORASP2"
[188] "NPY5R"
[189] "PLSCR5"
[190] "NNAT;NNAT;BLCAP;NNAT;BLCAP;NNAT;BLCAP;BLCAP;BLCAP"
[191] "PLA2G16;PLA2G16"
[192] "A1CF;A1CF;A1CF;A1CF;A1CF;A1CF"
[193] "BEGAIN;BEGAIN"
[194] "TSGA10;TSGA10"
[195] "DIP2C"
[196] "CTNND2"
[197] "MDGA2;MDGA2"
[198] "NPFFR2;NPFFR2;NPFFR2"
print(unique(res4$genes))
[1] "FGFR2;FGFR2;FGFR2;FGFR2;FGFR2;FGFR2;FGFR2;FGFR2;FGFR2"
[2] ""
[3] "C1orf109"
[4] "LOC254896"
[5] "CHMP7"
[6] "GALR1;GALR1"
[7] "TRIM15;TRIM15"
[8] "ADAMTS14;ADAMTS14"
[9] "CNKSR1;CNKSR1"
[10] "CNKSR1;CNKSR1;CNKSR1"
[11] "TRIM15"
[12] "SLC20A1"
[13] "FAM134B;LOC101929524"
[14] "FAM134B"
[15] "GALR1"
[16] "SCHIP1;IQCJ-SCHIP1;IQCJ-SCHIP1;SCHIP1;SCHIP1;SCHIP1"
[17] "C7orf49;C7orf49;C7orf49;C7orf49;C7orf49;C7orf49;C7orf49;C7orf49;C7orf49"
[18] "SCHIP1"
[19] "ZFR2"
[20] "SCHIP1;SCHIP1;IQCJ-SCHIP1;IQCJ-SCHIP1;SCHIP1;SCHIP1;SCHIP1"
[21] "CDCA8;C1orf109"
[22] "PHGDH"
[23] "C7orf49;C7orf49;C7orf49"
[24] "CCDC105"
[25] "LAX1;LAX1"
[26] "SLC1A5;SLC1A5;SLC1A5"
[27] "PKD2L2"
[28] "ANGPT2;ANGPT2;ANGPT2;ANGPT2;ANGPT2;ANGPT2;MCPH1"
[29] "GPR35;GPR35;GPR35"
[30] "DPEP1"
[31] "CCDC105;CCDC105"
[32] "CHMP7;CHMP7"
[33] "RARRES2"
[34] "CCDC105;SLC1A6"
res1 <- get_sig_dmr(terre_f_dmr[sig_terre_f[FDR < 0.05]$gene, on="cpg",nomatch=0][threshold == TRUE],digpd_f)
res2 <- get_sig_dmr(terre_m_dmr[sig_terre_m[FDR < 0.05]$gene, on="cpg",nomatch=0][threshold == TRUE],digpd_m)
res3 <- get_sig_dmr(digpd_f_dmr[digpd_f[FDR < 0.05]$gene, on="cpg",nomatch=0][threshold == TRUE],sig_terre_f)
res4 <- get_sig_dmr(digpd_m_dmr[digpd_m[FDR < 0.05]$gene, on="cpg",nomatch=0][threshold == TRUE],sig_terre_m)
print(length(unique(res1$dmr)))
[1] 23
print(length(unique(res2$dmr)))
[1] 10
print(length(unique(res3$dmr)))
[1] 11
print(length(unique(res4$dmr)))
[1] 3
print(length(unique(res1$res$gene)))
[1] 107
print(length(unique(res2$res$gene)))
[1] 42
print(length(unique(res3$res$gene)))
[1] 28
print(length(unique(res4$res$gene)))
[1] 15
print(unique(res1$genes))
[1] ""
[2] "CRACR2A;CRACR2A"
[3] "PM20D1"
[4] "PM20D1;PM20D1"
[5] "GSTM5"
[6] "CSGALNACT1;CSGALNACT1;CSGALNACT1"
[7] "MPRIP;MPRIP"
[8] "LOC100049716;NINJ2;NINJ2"
[9] "NINJ2"
[10] "MOG;MOG;MOG;MOG;MOG;MOG;MOG;MOG;MOG;MOG;MOG"
[11] "CBFA2T3"
[12] "GSTM5;GSTM5"
[13] "HOOK2;HOOK2"
[14] "ABCG2"
[15] "DNHD1"
[16] "PGAM2"
[17] "TRAPPC9;TRAPPC9"
[18] "LOC441666"
[19] "ARHGAP18"
[20] "LIPA;LIPA"
[21] "LIPA;LIPA;LIPA"
[22] "SMC4;SMC4;SMC4;SMC4;SMC4;SMC4"
[23] "F11-AS1"
print(unique(res2$genes))
[1] "DTNA;DTNA;DTNA;DTNA;DTNA;DTNA;DTNA;DTNA;DTNA;DTNA;DTNA;DTNA"
[2] "ZNF718;ZNF718;ZNF718;ZNF718;ZNF718;ZNF718"
[3] "ZNF718"
[4] ""
[5] "PAX8;PAX8;PAX8;PAX8;PAX8;LOC440839;LOC654433"
[6] "PAX8-AS1;PAX8-AS1;PAX8;PAX8;PAX8;PAX8"
[7] "PAX8;PAX8;LOC654433;PAX8;PAX8;PAX8;LOC440839"
[8] "CCDC155;CCDC155"
[9] "CCDC155"
print(unique(res3$genes))
[1] "" "NPAS3;NPAS3;NPAS3;NPAS3"
[3] "TNS3" "TTYH1;TTYH1;TTYH1"
[5] "TMEM72-AS1" "GLB1L;GLB1L;GLB1L"
[7] "MYO3B;MYO3B;MYO3B" "GLB1L;GLB1L;GLB1L;GLB1L"
[9] "GLB1L;GLB1L;GLB1L;GLB1L;GLB1L" "GLB1L"
[11] "TMEM85" "DIP2C"
print(unique(res4$genes))
[1] "FGFR2;FGFR2;FGFR2;FGFR2;FGFR2;FGFR2;FGFR2;FGFR2;FGFR2"
[2] ""
####Permutation testing Select random sets CpG sites of same size for dataset and test replication (i.e. is the replication in which sets of CpG sites have an mQTL more or less than expected by chances):
epic_cpgs <- fread("~/MethylationEPIC_v-1-0_B4.csv", skip = 7, fill = TRUE)$Name
male_n <- uniqueN(male_gpe_model$cpg)
female_n <- uniqueN(female_gpe_model$cpg)
m_dmrs_digpd